package Underworld_Survival;

import java.util.Arrays;
import java.util.List;

/**
 * 示例：事件配置
 */
class EventConfig {
    // 前期事件配置（从7 个事件中选1个）
    public static PeriodConfig<GameEvent> earlyPeriod() {
        List<WeightedItem<GameEvent>> candidates = Arrays.asList(
                new WeightedItem<>(new sneakAttackWithFlyingSword_Event(), 0.14), //飞剑偷袭
                new WeightedItem<>(new testOfTheProtectiveAmulet_Event(), 0.14),  //御守考验
                new WeightedItem<>(new interestingPuzzle_Event(), 0.1),           //趣味谜题
                new WeightedItem<>(new mysteriousAndPoisonousMaze_Event(), 0.08), //诡毒迷阵
                new WeightedItem<>(new bloodthirstyAltar_Event(), 0.12),          //嗜血祭坛
                new WeightedItem<>(new theWheelOfFate_Event(), 0.09),             //命运轮盘
                new WeightedItem<>(new fallenCommunionTable_Event(), 0.1),        //堕落圣餐台
                new WeightedItem<>(new monsters_Are_Coming(), 0.33)               //怪物来袭
        );

        return new PeriodConfig<>(candidates,  1, 1);
    }

    // 中期事件配置（从9个事件中选1个）
    public static PeriodConfig<GameEvent> midPeriod() {
        List<WeightedItem<GameEvent>> candidates = Arrays.asList(
                new WeightedItem<>(new sneakAttackWithFlyingSword_Event(), 0.1),//飞剑偷袭
                new WeightedItem<>(new testOfTheProtectiveAmulet_Event(), 0.1), //御守考验
                new WeightedItem<>(new interestingPuzzle_Event(), 0.1),         //趣味谜题
                new WeightedItem<>(new mysteriousAndPoisonousMaze_Event(), 0.1),//诡毒迷阵
                new WeightedItem<>(new bloodthirstyAltar_Event(), 0.1),         //嗜血祭坛
                new WeightedItem<>(new tyrant_sGamblingTable_Event(), 0.12),    //暴君赌桌
                new WeightedItem<>(new theWheelOfFate_Event(), 0.1),             //命运轮盘
                new WeightedItem<>(new fallenCommunionTable_Event(), 0.1),      //堕落圣餐台
                new WeightedItem<>(new monsters_Are_Coming(), 0.28)             //怪物来袭
        );
        return new PeriodConfig<>(candidates, 1, 1);
    }
    // 后期事件配置（从10个事件中选1个）
    public static PeriodConfig<GameEvent> latePeriod() {
        List<WeightedItem<GameEvent>> candidates = Arrays.asList(
                new WeightedItem<>(new sneakAttackWithFlyingSword_Event(), 0.09),//飞剑偷袭
                new WeightedItem<>(new testOfTheProtectiveAmulet_Event(), 0.09), //御守考验
                new WeightedItem<>(new interestingPuzzle_Event(), 0.08),         //趣味谜题
                new WeightedItem<>(new mysteriousAndPoisonousMaze_Event(), 0.1), //诡毒迷阵
                new WeightedItem<>(new bloodthirstyAltar_Event(), 0.11),         //嗜血祭坛
                new WeightedItem<>(new tyrant_sGamblingTable_Event(), 0.1),      //暴君赌桌
                new WeightedItem<>(new theWheelOfFate_Event(), 0.11),            //命运轮盘
                new WeightedItem<>(new fallenCommunionTable_Event(), 0.1),       //堕落圣餐台
                new WeightedItem<>(new monsters_Are_Coming(), 0.32)              //怪物来袭
        );

        return new PeriodConfig<>(candidates,1, 1);
    }

    //末期事件配置（从7个事件中选1个）
    public static PeriodConfig<GameEvent> finalPeriod() {
        List<WeightedItem<GameEvent>> candidates = Arrays.asList(
                new WeightedItem<>(new sneakAttackWithFlyingSword_Event(), 0.08),//飞剑偷袭
                new WeightedItem<>(new testOfTheProtectiveAmulet_Event(), 0.08),//御守考验
                new WeightedItem<>(new mysteriousAndPoisonousMaze_Event(), 0.12),//诡毒迷阵
                new WeightedItem<>(new bloodthirstyAltar_Event(), 0.1),//嗜血祭坛
                new WeightedItem<>(new theWheelOfFate_Event(), 0.12),//命运轮盘
                new WeightedItem<>(new tyrant_sGamblingTable_Event(), 0.14),//暴君赌桌
                new WeightedItem<>(new fallenCommunionTable_Event(), 0.1),   //堕落圣餐台
                new WeightedItem<>(new monsters_Are_Coming(), 0.36)  //怪物来袭
        );

        return new PeriodConfig<>(candidates,1, 1);
    }

    // 无尽模式事件配置（全局所有事件15个随机事件）
    public static PeriodConfig<GameEvent> endlessMode() {
        List<WeightedItem<GameEvent>> candidates = Arrays.asList(
                new WeightedItem<>(new sneakAttackWithFlyingSword_Event(), 0.1), //飞剑偷袭
                new WeightedItem<>(new testOfTheProtectiveAmulet_Event(), 0.1),  //御守考验
                new WeightedItem<>(new interestingPuzzle_Event(), 0.1),          //趣味谜题
                new WeightedItem<>(new mysteriousAndPoisonousMaze_Event(), 0.1), //诡毒迷阵
                new WeightedItem<>(new bloodthirstyAltar_Event(), 0.1),          //嗜血祭坛
                new WeightedItem<>(new tyrant_sGamblingTable_Event(), 0.1),      //暴君赌桌
                new WeightedItem<>(new fallenCommunionTable_Event(), 0.1),       //堕落圣餐台
                new WeightedItem<>(new theWheelOfFate_Event(), 0.1),              //命运轮盘
                new WeightedItem<>(new monsters_Are_Coming(), 0.8)                //怪物来袭
        );
        return new PeriodConfig<>(candidates, 1, 1);
    }
}